﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.UI.Common;

namespace Sinacor.UI.Bovespa.Ordens.Communication.Translator.ModelToDataContract
{
    public class Ordem
    {
        public List<Bovespa.Ordens.Ordem.OrdemDistribuidaRequest> ToOrdemDistribuidaRequest(ModelCollection<Model.OrdemDistribuida> from)
        {
            List<Bovespa.Ordens.Ordem.OrdemDistribuidaRequest> to = null;

            if (from != null)
            {
                to = new List<Bovespa.Ordens.Ordem.OrdemDistribuidaRequest>();

                foreach (Model.OrdemDistribuida item in from)
                {
                    to.Add(ToOrdemDistribuidaRequest(item));
                }
            }

            return to;
        }

        public Bovespa.Ordens.Ordem.OrdemDistribuidaRequest ToOrdemDistribuidaRequest(Model.OrdemDistribuida from)
        {
            Bovespa.Ordens.Ordem.OrdemDistribuidaRequest to = null;

            if (from != null)
            {
                to = new Bovespa.Ordens.Ordem.OrdemDistribuidaRequest();

                to.Bolsa = from.Bolsa;
                to.CodigoBroker = from.CodigoBroker;
                to.CodigoFilhote = from.CodigoFilhote;
                to.DataOrdem = from.DataOrdem;
                to.DataPregao = from.DataPregao;
                to.Identificador = from.Identificador;

                switch (from.NaturezaOperacao)
                {
                    case Model.Enum.TipoNaturezaOperacao.Compra:
                        to.NaturezaOperacao = Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Compra;
                        break;
                    case Model.Enum.TipoNaturezaOperacao.Venda:
                        to.NaturezaOperacao = Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Venda;
                        break;
                }

                to.NumeroConjunto = from.NumeroConjunto;
                to.NumeroNegocio = from.NumeroNegocio;
                to.NumeroOrdem = from.NumeroOrdem;
                to.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;
                to.TipoCancelamento = from.TipoCancelamento;
                to.TipoDistribuicao = from.TipoDistribuicao;
                to.Titulo = from.Titulo;
            }

            return to;
        }
    }
}
